//计算每个格子距离顶端的长度。
//第一行：20px
//第二行：20px + 100px +20px;
//第三行：20px + (100+20)*2px;
function getPosTop(i, j) {
	return 20 + i * 120;
}

function getPosLeft(i, j) {
	return 20 + j * 120;
}

//获取的number-cell的背景
function getNumberBackgroundColor(number) {
	switch( number ) {
		case 2:
			return "#eee4da";
			break;
		case 4:
			return "#ede0c8";
			break;
		case 8:
			return "#f2b179";
			break;
		case 16:
			return "#f59563";
			break;
		case 32:
			return "#f67c5f";
			break;
		case 64:
			return "#f65e3b";
			break;
		case 128:
			return "#edcf72";
			break;
		case 256:
			return "#edcc61";
			break;
		case 512:
			return "#9c0";
			break;
		case 1024:
			return "#33b5e5";
			break;
		case 2048:
			return "#09c";
			break;
		case 4096:
			return "#a6c";
			break;
		case 8192:
			return "#93c";
			break;
	}

	return "black";
}

//设置number-cell的数字颜色
function getNumberColor(number) {
	if (number <= 4)
		return "#776e65";

	return "white";
}

//面板上没有空位，有空位的话在数组中为数字0，返回false表示有空位
//返回true的话表示没有空位
function nospace(board) {

	for (var i = 0; i < 4; i++)
		for (var j = 0; j < 4; j++)
			if (board[i][j] == 0)
				return false;

	return true;
}

//判断是否可以向左移动
function canMoveLeft(board) {
	for (var i = 0; i < 4; i++) {
		//从第二列开始比较，第一列无法左移
		for (var j = 1; j < 4; j++) {
			//是否有数
			if (board[i][j] != 0) {
				//数为0或者两数相等可以合并的情况下，是可以左移的
				if (board[i][j - 1] == 0 || board[i][j - 1] == board[i][j]) {
					return true;
				}
			}
		}
	}
	return false;
}
//左移是否有障碍物
function noBlockHorizontal(row, col1, col2, board) {
	for (var i = col1 + 1; i < col2; i++) {
		if (board[row][i] != 0) {
			return false;
		}
	}
	return true;
}

//判断是否可以向上移动
function canMoveUp(board) {
	for (var j = 0; j < 4; j++) {
		//从第二列开始比较，第一列无法左移
		for (var i = 1; i < 4; i++) {
			//是否有数
			if (board[i][j] != 0) {
				//数为0或者两数相等可以合并的情况下，是可以左移的
				if (board[i-1][j] == 0 || board[i-1][j] == board[i][j]) {
					return true;
				}
			}
		}
	}
	return false;
}
//上移是否有障碍物
function noBlockHorizontal01(col, row1, row2, board) {
	for (var i = row1 + 1; i < row2; i++) {
		if (board[i][col] != 0) {
			return false;
		}
	}
	return true;
}

//判断是否可以向右移动
function canMoveRight(board) {
	for (var i = 0; i < 4; i++) {
		//从第二列开始比较，第一列无法左移
		for (var j = 2; j >= 0; j--) {
			//是否有数
			if (board[i][j] != 0) {
				//数为0或者两数相等可以合并的情况下，是可以左移的
				if (board[i][j+1] == 0 || board[i][j+1] == board[i][j]) {
					return true;
				}
			}
		}
	}
	return false;
}
//右移是否有障碍物
function noBlockHorizontal02(row, col1, col2, board) {
	for (var i = col1+1; i < col2; i++) {
		if (board[row][i] != 0) {
			return false;
		}
	}
	return true;
}


//判断是否可以向下移动
function canMoveDown(board) {
	for (var j = 0; j < 4; j++) {
		//从第二行开始比较，第三行无法下移
		for (var i = 2; i >= 0; i--) {
			//是否有数
			if (board[i][j] != 0) {
				//下一数为0或者两数相等可以合并的情况下，是可以左移的
				if (board[i+1][j] == 0 || board[i+1][j] == board[i][j]) {
					return true;
				}
			}
		}
	}
	return false;
}
//上移是否有障碍物
function noBlockHorizontal03(col, row1, row2, board) {
	for (var i = row1 + 1; i < row2; i++) {
		if (board[i][col] != 0) {
			return false;
		}
	}
	return true;
}

//上下左右均不可移动
function nomove( board ){
    if( canMoveLeft( board ) ||
        canMoveRight( board ) ||
        canMoveUp( board ) ||
        canMoveDown( board ) )
        return false;

    return true;
}
